/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.qp.smsmarketing.dao;

import com.qp.smsmarketing.dao.abstractdao.AbstractDAO;
import com.qp.smsmarketing.dao.abstractdao.Hib;
import com.qp.smsmarketing.entity.Lembrete;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author joasramos
 */
public class LembreteDAO extends AbstractDAO {

    private Lembrete lembrete;

    public LembreteDAO() {
        super.entityManager = Hib.getSessionFactory();
    }

    public LembreteDAO(Lembrete lembrete) {
        super.entityManager = Hib.getSessionFactory();
        this.lembrete = lembrete;
    }

    @Override
    public List buscarTodos() {
        return findAllRows("Lembrete");
    }

    @Override
    public boolean salvarObj(Object o) {
        return salvar(o);
    }

    /**
     * 
     * @param titulo
     * @param descricao
     * @param informacao
     * @param dataSelecionada
     * @return 
     */
    public boolean atualizarDados(String titulo, String descricao, String informacao, Date dataSelecionada) {
        entityManager.getTransaction().begin();
        String update = " update Lembrete set descricao=:descricao, informacao=:informacao where titulo=:titulo and data=:data ";

        try {
            entityManager.createQuery(update)
                    .setParameter("descricao", descricao)
                    .setParameter("informacao",informacao)
                    .setParameter("titulo", titulo)
                    .setParameter("data", dataSelecionada)
                    .executeUpdate();
            entityManager.getTransaction().commit();
            return true;
        } catch (Exception e) {
            System.out.println(e);
            return false;
        }

    }

    /**
     * 
     * @param titulo
     * @param dataSelecionada
     * @return 
     */
    public boolean excluirDados(String titulo, Date dataSelecionada) {
        entityManager.getTransaction().begin();

        String excluir = "delete Lembrete where data=:data and titulo=:titulo";

        try {
            entityManager.createQuery(excluir).setParameter("data", dataSelecionada).setParameter("titulo", titulo).executeUpdate();
            entityManager.getTransaction().commit();
            return true;
        } catch (Exception e) {
            System.out.println(e);
            return false;
        }


    }

    /**
     * 
     * @return 
     */
    public List<Lembrete> getListaLembretes() {
        List<Lembrete> lista = new ArrayList<Lembrete>();
        lembrete.setData(new Date());
        lista.add(lembrete);
        return lista;
    }

    /**
     * 
     * @param dataSelecionada
     * @return 
     */
    public List getlistaLembretesporData(Date dataSelecionada) {
        return findAllRowsPorData("Lembrete", dataSelecionada);
    }
    
    /**
     * 
     * @param selectedItem
     * @return 
     */
    public Object getDescricao(Object selectedItem) {
        return findAllRowsRestricao("Lembrete", selectedItem, "descricao");
    }

    /**
     * 
     * @param selectedItem
     * @return 
     */
    public Object getInformacao(Object selectedItem) {
        return findAllRowsRestricao("Lembrete", selectedItem, "informacao");
    }

    /**
     * 
     * @param o
     * @return 
     */
    public boolean atualizarDados(Object o) {
        return false;
    }
}
